// O(n^2) 超时
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main() {
  cin.tie(nullptr)->sync_with_stdio(false);
  cin.exceptions(cin.failbit);

  int q;
  cin >> q;

  string s;           // 括号序列
  int prefix_sum = 0; // 当前前缀和
  int min_prefix = 0; // 历史最小前缀和（用于快速判断是否存在负值）

  while (q--) {
    int op;
    cin >> op;

    if (op == 1) { // 添加括号
      char ch;
      cin >> ch;

      // 更新前缀和
      if (ch == '(')
        prefix_sum++;
      else
        prefix_sum--;

      s.push_back(ch);

      // 更新历史最小前缀和
      min_prefix = min(min_prefix, prefix_sum);

    } else { // 删除最后一个括号
      // 恢复前缀和
      if (s.back() == '(')
        prefix_sum--;
      else
        prefix_sum++;

      s.pop_back();

      // 重新计算历史最小前缀和（因为删除后可能改变）
      min_prefix = 0;
      int current = 0;
      for (char c : s) {
        if (c == '(')
          current++;
        else
          current--;
        min_prefix = min(min_prefix, current);
      }
    }

    // 检查是否有效：前缀和始终≥0且最终为0
    bool valid = (min_prefix >= 0 && prefix_sum == 0);
    cout << (valid ? "Yes" : "No") << '\n';
  }
}